windows11,powershell 7.2 出现因为在此系统上禁止运行脚本,无法调用类似yarn等脚本 您所在的位置:网站首页 win 安全策略 windows11,powershell 7.2 出现因为在此系统上禁止运行脚本,无法调用类似yarn等脚本

windows11,powershell 7.2 出现因为在此系统上禁止运行脚本,无法调用类似yarn等脚本

2023-08-11 13:41| 来源: 网络整理| 查看: 265

并且用管理员打开powershell 7.2中无法更新PowerShell 执行策略

Set-ExecutionPolicy: Access to the path 'C:\Program Files\PowerShell\7\powershell.config.json' is denied. To change the execution policy for the default (LocalMachine) scope, start PowerShell with the "Run as administrator" option. To change the execution policy for the current user, run "Set-ExecutionPolicy -Scope CurrentUser".

 命令不是网上说的

set-executionpolicy remotesigned

 新的命令为

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser 详细说明

PowerShell 的执行策略是一项安全功能,用于控制 PowerShell 加载配置文件和运行脚本的条件。 此功能有助于防止恶意脚本的执行。

在 Windows 计算机上,你可以为本地计算机、当前用户或特定会话设置执行策略。 还可使用组策略设置为计算机和用户设置执行策略。

本地计算机和当前用户的执行策略存储在注册表中。 无需在 PowerShell 配置文件中设置执行策略。 特定会话的执行策略仅存储在内存中,在关闭会话时将丢失。

执行策略不是限制用户操作的安全系统。 例如,当用户无法运行脚本时,可以通过在命令行中键入脚本内容来轻松绕过策略。 相反,执行策略可帮助用户设置基本规则,并防止用户无意中违反这些规则。

在非 Windows 计算机上,默认执行策略为 且 Unrestricted 无法更改。 Set-ExecutionPolicycmdlet 可用,但 PowerShell 显示一条控制台消息,指出它不受支持。 虽然 在非 Windows 平台上返回 ,但行为确实匹配 Get-ExecutionPolicy Unrestricted ,因为这些 Bypass 平台不实现 Windows 安全区域。

PowerShell 执行策略

仅在 Windows 平台上强制执行这些策略。 PowerShell 执行策略如下所示:

AllSigned 脚本可以运行。要求所有脚本和配置文件都由受信任的发布者签名,包括在本地计算机上编写的脚本。在从尚未分类为受信任或不受信任的发布者运行脚本之前,提示你。运行已签名但恶意的脚本的风险。 Bypass 不阻止任何操作,并且没有任何警告或提示。此执行策略适用于将 PowerShell 脚本内置到较大应用程序中的配置,或用于 PowerShell 是具有其自己的安全模型的程序基础的配置。 Default 设置默认执行策略。Restricted 对于 Windows 客户端。适用于 Windows 服务器的 RemoteSigned。 RemoteSigned Windows 服务器计算机的默认执行策略。脚本可以运行。需要受信任的发布者对从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)进行数字签名。对于在本地计算机上编写且未从 Internet 下载的脚本,不需要数字签名。如果脚本未受阻止(例如使用 cmdlet),则运行从 Internet 下载且 Unblock-File 未签名的脚本。从 Internet 来源(而不是 Internet)运行未签名脚本的风险,以及可能是恶意的已签名脚本的风险。 Restricted Windows 客户端计算机的默认执行策略。允许单个命令,但不允许脚本。阻止运行所有脚本文件,包括格式化和配置文件 () 、模块脚本文件 () 和 .ps1xml .psm1 PowerShell 配置文件 .ps1 () 。 Undefined 当前作用域中未设置执行策略。如果所有作用域中的执行策略都是 ,则有效执行策略 Undefined 适用于 Restricted Windows 客户端 ,RemoteSigned 适用于 Windows Server。 Unrestricted 不能更改非 Windows 计算机的默认执行策略。未签名的脚本可以运行。 存在运行恶意脚本的风险。在运行不是来自本地 Intranet 区域中的脚本和配置文件之前,警告用户。

 备注

在未区分通用命名约定 (UNC) 路径与 Internet 路径的系统上,可能不允许 UNC 路径标识的脚本使用 RemoteSigned 执行策略运行。

执行策略范围

可以设置仅在特定范围内有效的执行策略。

的有效值为 Scope MachinePolicy 、UserPolicy Process 、、CurrentUser 和 LocalMachine。 LocalMachine 是设置执行策略时的默认选项。

这些值 Scope 按优先顺序列出。 优先的策略在当前会话中有效,即使设置了限制性更强且优先级较低的策略。

有关详细信息,请参阅 Set-ExecutionPolicy。

MachinePolicy

由 组策略计算机的所有用户设置。

UserPolicy

由 组策略当前用户的设置。

Process

Process 范围仅影响当前 PowerShell 会话。 执行策略保存在环境变量 中 $env:PSExecutionPolicyPreference ,而不是注册表中。 关闭 PowerShell 会话后,将删除变量和值。

CurrentUser

执行策略仅影响当前用户。 它存储在注册表 HKEY_CURRENT_USER项中 。

LocalMachine

执行策略会影响当前计算机上所有用户。 它存储在注册表 HKEY_LOCAL_MACHINE项中 。

使用 PowerShell 管理执行策略

若要获取当前 PowerShell 会话的有效执行策略,请使用 Get-ExecutionPolicy cmdlet。

以下命令获取有效执行策略:

PowerShell复制

Get-ExecutionPolicy

若要获取影响当前会话的所有执行策略,并按优先顺序显示这些策略,请执行以下命令:

PowerShell复制

Get-ExecutionPolicy -List

结果类似于以下示例输出:

Output复制

Scope ExecutionPolicy ----- --------------- MachinePolicy Undefined UserPolicy Undefined Process Undefined CurrentUser RemoteSigned LocalMachine AllSigned

在这种情况下,有效执行策略为 RemoteSigned, 因为当前用户的执行策略优先于为本地计算机设置的执行策略。

若要获取特定范围的执行策略集,请使用 Scope 的 参数 Get-ExecutionPolicy 。

例如,以下命令获取 CurrentUser 范围的执行 策略:

PowerShell复制

Get-ExecutionPolicy -Scope CurrentUser 更改执行策略

若要更改 Windows 计算机的 PowerShell 执行策略,请使用 Set-ExecutionPolicy cmdlet。 更改会立即生效。 无需重启 PowerShell。

如果为 LocalMachine 或 CurrentUser 范围设置执行策略,则更改将保存在注册表中,并一直有效,直到再次更改它。

如果为范围设置执行 Process 策略,该策略不会保存在注册表中。 将保留执行策略,直到当前进程和任何子进程关闭。

 备注

在 Windows Vista 和更高版本的 Windows 中,若要运行更改本地计算机 LocalMachine 范围的执行策略的命令,请通过"以管理员方式运行"选项启动 PowerShell。

更改执行策略:

PowerShell复制

Set-ExecutionPolicy -ExecutionPolicy

例如:

PowerShell复制

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

设置特定作用域中的执行策略:

PowerShell复制

Set-ExecutionPolicy -ExecutionPolicy -Scope

例如:

PowerShell复制

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

更改执行策略的命令可以成功,但仍不能更改有效执行策略。

例如,为本地计算机设置执行策略的命令可以成功,但被当前用户的执行策略重写。

删除执行策略

若要删除特定范围的执行策略,将执行策略设置为 Undefined 。

例如,若要删除本地计算机的所有用户的执行策略,请执行以下命令:

PowerShell复制

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine

删除 的执行策略 Scope :

PowerShell复制

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

如果在任何作用域中未设置执行策略,则有效执行策略为 Restricted ,这是 Windows 客户端的默认策略。

为一个会话设置不同的策略

可以使用 的 ExecutionPolicy 参数 pwsh.exe 为新的 PowerShell 会话设置执行策略。 策略仅影响当前会话和子会话。

若要设置新会话的执行策略,请从命令行(如 PowerShell 或 PowerShell)启动 PowerShell,然后使用 的 cmd.exe ExecutionPolicy 参数 pwsh.exe 设置执行策略。

例如:

PowerShell复制

pwsh.exe -ExecutionPolicy AllSigned

设置的执行策略不会存储在注册表中。 而是存储在环境 $env:PSExecutionPolicyPreference 变量中。 关闭设置策略的会话时,将删除该变量。 不能通过编辑变量值来更改策略。

在会话期间,为会话设置的执行策略优先于在本地计算机或当前用户的注册表中设置的执行策略。 但是,它并不优先于使用命令设置的执行组策略。

使用组策略管理执行策略

可以使用"启用 脚本执行 组策略"设置来管理企业中计算机的执行策略。 "组策略"设置将覆盖所有作用域的 PowerShell 中设置的执行策略。

" 启用脚本执行" 策略设置如下所示:

如果禁用 "启用脚本执行", 则脚本不会运行。 这等效于 Restricted 执行策略。

如果启用 "启用脚本执行", 可以选择执行策略。 组策略设置等效于以下执行策略设置:

表 1 组策略执行策略允许所有脚本Unrestricted允许本地脚本和远程签名脚本RemoteSigned仅允许已签名的脚本AllSigned

如果未 配置"启用 脚本执行",则不起作用。 PowerShell 中设置的执行策略有效。

PowerShellExecutionPolicy.adm 和 PowerShellExecutionPolicy.admx 文件将以下路径中的"启用脚本执行"策略添加到 组策略 编辑器中的"计算机配置"和"用户配置"节点。

对于 Windows XP 和 Windows Server 2003:

Administrative Templates\Windows Components\Windows PowerShell

对于 Windows Vista 和更高版本的 Windows:

Administrative Templates\Classic Administrative Templates\Windows Components\Windows PowerShell

在"计算机配置"节点中设置的策略优先于在"用户配置"节点中设置的策略。

有关详细信息,请参阅 about_Group_Policy_Settings。

执行策略优先级

确定会话的有效执行策略时,PowerShell 将按以下优先顺序评估执行策略:

复制

Group Policy: MachinePolicy Group Policy: UserPolicy Execution Policy: Process (or pwsh.exe -ExecutionPolicy) Execution Policy: CurrentUser Execution Policy: LocalMachine 管理已签名和未签名的脚本

在 Windows 中,Internet Explorer和Microsoft Edge程序向下载的文件添加备用数据流。 这会将文件标记为"来自 Internet"。 如果 PowerShell 执行策略为 RemoteSigned,则 PowerShell 不会运行从 Internet 下载的未签名脚本,其中包括电子邮件和即时消息程序。

你可以对脚本进行签名,也可以选择在不更改执行策略的情况下运行未签名的脚本。

从 PowerShell 3.0 开始,可以使用 cmdlet 的 Stream 参数来检测由于从 Internet 下载而受阻 Get-Item 的文件。 使用 Unblock-File cmdlet 取消阻止脚本,以便可以在 PowerShell 中运行它们。

有关详细信息,请参阅 about_Signing、Get-Item和Unblock-File。

 备注

下载文件的其他方法可能不会将文件标记为来自 Internet 区域。 示例包括:

curl.exeInvoke-RestMethodInvoke-WebRequest Windows Server Core 和 Window Nano Server 上的执行策略

在某些情况下,当 PowerShell 6 在 Windows Server Core 或 Windows Nano Server 上运行时,执行策略可能会失败并出现以下错误:

Output复制

AuthorizationManager check failed. At line:1 char:1 + C:\scriptpath\scriptname.ps1 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess

PowerShell 使用 Windows Desktop Shell () explorer.exe API 来验证脚本文件的区域。 Windows Shell 在 Windows Server Core 和 Windows Nano Server 上不可用。

如果 Windows 桌面 Shell 不可用或无响应,则在任何 Windows 系统上也可能会收到此错误。 例如,在登录期间,PowerShell 登录脚本可以在 Windows 桌面准备就绪之前开始执行,从而导致失败。

使用 ByPass 或 AllSigned 的执行策略不需要区域检查来避免此问题。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有